package com.rds.workflow.mapper;


import com.rds.workflow.domain.RdaNodeTemplete;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface RdaNodeTempleteMapper {
    /**
     * 查询流程节点
     *
     * @param id 节点ID
     * @return 流程节点
     */
    public RdaNodeTemplete selectRdaNodeTempleteById(Long id);

    /**
     * 查询流程节点列表
     *
     * @param workflowid 流程模板id
     * @param id 节点id
     * @return 流程节点集合
     */
    public RdaNodeTemplete selectRdaNodeTempleteByNodeid(@Param("workflowid") Long workflowid,@Param("id") Long id);

    /**
     * 查询流程节点
     *
     * @param id 节点ID
     * @return 流程节点
     */
    public List<RdaNodeTemplete> selectRdaNodeTempleteByInId(String id);


    /**
     * 根据流程模板id查询节点
     *
     * @param id 流程模板ID
     * @return 流程节点
     */
    public List<RdaNodeTemplete> selectRdaNodeTempleteByWorkflowid(Long id);

    /**
     * 查询流程节点列表
     *
     * @param rdaNodeTemplete 流程节点
     * @return 流程节点集合
     */
    public List<RdaNodeTemplete> selectRdaNodeTempleteList(RdaNodeTemplete rdaNodeTemplete);

    /**
     * 查询流程节点列表
     *
     * @param workflowid 流程节点
     * @return 流程节点集合
     */
    public List<RdaNodeTemplete> selectRdaNodeTemplete(@Param("workflowid") Long workflowid);

    /**
     * 根据流程模板id查询流程节点列表类型
     *
     * @param workflowid 流程模板Id
     * @param nodeType 节点类型：0 开始,1 中间节点,-1 结束节
     * @return 流程节点集合
     */
    public  RdaNodeTemplete selectRdaNodeTempleteByNodeType(@Param("workflowid") Long workflowid,@Param("nodeType") Long nodeType);

    /**
     * 新增流程节点
     *
     * @param rdaNodeTemplete 流程节点
     * @return 结果
     */
    public int insertRdaNodeTemplete(RdaNodeTemplete rdaNodeTemplete);

    /**
     * 修改流程节点
     *
     * @param rdaNodeTemplete 流程节点
     * @return 结果
     */
    public int updateRdaNodeTemplete(RdaNodeTemplete rdaNodeTemplete);

    /**
     * 批量删除流程节点
     *
     * @param ids 需要删除的流程节点ID
     * @return 结果
     */
    public int deleteRdaNodeTempleteByIds(Long[] ids);

    /**
     * 批量删除流程节点
     *
     * @param ids 需要删除的流程节点ID
     * @return 结果
     */
    public int deleteRdaNodeTempleteByWorkflowIds(Long[] ids);

    /**
     * 修改流程节点
     *
     * @param ids 流程节点
     * @return 结果
     */
    public int updateRdaNodeTempleteByLevel(@Param("ids") String ids);

    /**
     * 查询流程节点列表
     *
     * @param workflowid 流程模板id
     * @param isAgent 是否委托
     * @return 流程节点集合
     */
    public List<RdaNodeTemplete> selectRdaNodeTempleteAgentList(@Param("workflowid") Long workflowid,@Param("isAgent") String isAgent);

    /**
     * 获取序列
     */
    public Long selectRdaNodeTempleteNextval();

    /**
     * 批量删除流程节点
     *
     * @param workflowid 流程id
     * @return 结果
     */
    public int deleteRdaNodeTempleteByWorkflowid(@Param("workflowid") Long workflowid);
}
